home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / oop_tp55.zip / FRENCHVB.PAS < prev    next >
Pascal/Delphi Source File  |  1980-01-07  |  2KB  |  84 lines

  1. unit FrenchVb;  { Listing 5-6 }
  2.  
  3. interface
  4.  
  5. type
  6.  
  7. Person = ( fps, sps, tps, fpp, spp, tpp );
  8. Ending = array[fps..tpp] of string;
  9.  
  10. const
  11. ER_Nominative : Ending
  12.      = ( 'e', 'es', 'e', 'ons', 'ez', 'ent' );
  13. IR_Nominative : Ending
  14.      = ( 'is', 'is', 'it', 'issons', 'issez', 'issent');
  15. RE_Nominative : Ending
  16.      = ( 's', 's', '', 'ons', 'ez', 'ent');
  17.  
  18. type
  19. Verb = object
  20.        Infinitive : string;
  21.        Root       : string;
  22.        constructor Init( TheVerb : string );
  23.        function VerbForm( E : Person ) : string; virtual;
  24.        procedure ConjugateVerb;
  25.        end;
  26.  
  27. RE_Verb = object( Verb )
  28.           function VerbForm( E : Person ) : string; virtual;
  29.              end;
  30.  
  31.  
  32. IR_Verb = object( Verb )
  33.           function VerbForm( E : Person ) : string; virtual;
  34.              end;
  35.  
  36. ER_Verb = object( Verb )
  37.           function VerbForm( E : Person ) : string; virtual;
  38.              end;
  39.  
  40. implementation
  41.  
  42. constructor Verb.Init( TheVerb : string );
  43. begin
  44.      Infinitive := TheVerb;
  45.      Root := Copy( TheVerb, 1, (Length(TheVerb) - 2) );
  46. end;
  47.  
  48. { This function is needed to be able to compile the
  49.   .ConjugateVerb method }
  50. function Verb.VerbForm( E: Person ) : string;
  51. begin
  52.      VerbForm := '';
  53. end;
  54.  
  55. function ER_Verb.VerbForm( E : Person ) : string;
  56. begin
  57.      VerbForm := Concat( Root, ER_Nominative[E] )
  58. end;
  59.  
  60. function IR_Verb.VerbForm( E : Person ) : string;
  61. begin
  62.      VerbForm := Concat( Root, IR_Nominative[E] )
  63. end;
  64.  
  65. function RE_Verb.VerbForm( E : Person ) : string;
  66. begin
  67.      VerbForm := Concat( Root, RE_Nominative[E] )
  68. end;
  69.  
  70. procedure Verb.ConjugateVerb;
  71. begin
  72.      writeln( 'Conjugation of the verb ', Infinitive, ':' );
  73.      writeln( 'je ', VerbForm( fps ) );
  74.      writeln( 'tu ', VerbForm( sps ) );
  75.      writeln( 'il ', VerbForm( tps ) );
  76.      writeln( 'nous ', VerbForm( fpp ) );
  77.      writeln( 'vous ', VerbForm( spp ) );
  78.      writeln( 'ils ', VerbForm( tpp ) );
  79. end;
  80.  
  81.  
  82. end.
  83.  
  84.  { end of Listing 5-6 }